collectdのCloudWatchプラグインを試してみた
こんにちわ。昨日はドムの日でしたが全問正解できなかったガノタ市田です。
今回は新しくリリースされたcollectdのCloudWatchプラグインについて紹介します。
New – CloudWatch Plugin for collectd | AWS Blog
何ができるか
CloudWatchがcollectdに対応したことによりサーバ上の様々な情報をcollectd経由でCloudWatchに送ることができ、そこでモニタリングできるようになりました。
導入の概要
- collectd用のIAMポリシー作成
- 収集対象のインスタンスにポリシーアタッチ
- 対象インスタンスにcollectdのインストールと設定
それでは早速見ていきたいと思います。
手順
IAMの画面でポリシーを作成します。
ポリシーの作成をクリックします。
Policy Generatorを選択します。
次の画面の通り、CloudWatchの「PutMetricData」だけチェックを入れます。
「ステートメントを追加」をクリックして「次のステップ」をクリックします。
「ポリシーの作成」をそのままクリックします。
ポリシー名はデフォルトでも構いません。今回は分かりやすいものに変えました。
IAM Roleの作成
既存インスタンスに適用する場合
既存インスタンスのRoleに関連付ける場合は、すでにアタッチされているRoleに先程作成したポリシーを追加するだけです。
注意点
既存インスタンスに適用する場合は、対象インスタンスにIAM Roleが既に適用されている場合に限ります。インスタンス作成時にIAM Roleを付けていない場合は、Role自体を後から付けることができません。
その場合はIAM Userで対応するしかありませんがセキュリティ的にオススメではありません。
手順
では実際に、既存インスタンスに適用する手順を見ていきます。
対象インスタンスにアタッチしているIAM Roleを選択して「アクセス許可」タブを開きます。ここで「ポリシーのアタッチ」をクリックします。
次にフィルターで先程作成したポリシーを検索してチェックします。ポリシータイプのプルダウンから表示を絞り込んでもいいと思います。
この状態で「ポリシーのアタッチ」をクリックします。
新規インスタンスに適用する場合
場合によって下記の2通りあると思います。
- 先程作成したポリシーを、上記の手順で既存のIAM Roleに追加する方法
- 新規にIAM Roleを作成する方法
既存のIAM Roleに追加する方法は先程の通りですので、ここでは新規にIAM Roleを作成する手順を紹介します。
IAMの画面で「新しいロールの作成」をクリックします。
ロール名を設定します。今回は「Collectd_PutMetricData」にしました。
「Amazon EC2」を選択します。
作成済みのポリシーを選択します。選択するときは先程と同様に検索窓でフィルタリングすると便利です。
そのまま「ロールの作成」をクリックします。
これで専用のIAM Roleができましたので、下記のようにインスタンス作成時にこのRoleを指定してあげればOKです。
collectdのインストールと設定
次はインスタンス側の設定です。まずはcollectd
をインストールします。
今回はAmazonLinuxを対象にしてみました。
AmazonLinuxにcollectdをインストールします。yumでインストール可能です。
sudo yum -y install collectd
今回はgitからソースを取ってきました。
git clone https://github.com/awslabs/collectd-cloudwatch.git
setup.py
を実行してインストールしていきます。
cd collectd-cloudwatch/src sudo ./setup.py
設定をインタラクティブに聞いてくるので、適宜回答していきます。基本的にはデフォルトのままでよいかと思いますが、IAM Userを使っている場合など、必要に応じた選択をします。
Installing dependencies ... OK Installing python dependencies ... OK Downloading plugin ... OK Extracting plugin ... OK Moving to collectd plugins directory ... OK Copying CloudWatch plugin include file ... OK Choose AWS region for published metrics: 1. Automatic [ap-northeast-1] 2. Custom Enter choice [1]: Choose hostname for published metrics: 1. EC2 instance id [i-xxxxxxxxxxxxxxxxx] 2. Custom Enter choice [1]: Choose authentication method: 1. IAM Role [Collectd_PutMetricData] 2. IAM User Enter choice [1]: Choose how to install CloudWatch plugin in collectd: 1. Do not modify existing collectd configuration 2. Add plugin to the existing configuration Enter choice [2]: Plugin configuration written successfully. Stopping collectd process ... NOT OK Starting collectd process ... OK
この状態でcollectdが起動していますので、次にCloudWatchで表示させる項目を選択します。
次のファイルにある一覧は、「メトリクス対象だがCloudWatchでは表示されない項目のリスト」です。
cat /opt/collectd-plugins/cloudwatch/config/blocked_metrics
cpu-0-cpu-user cpu-0-cpu-nice cpu-0-cpu-system cpu-0-cpu-idle cpu-0-cpu-wait cpu-0-cpu-interrupt cpu-0-cpu-softirq cpu-0-cpu-steal interface-lo-if_octets- interface-lo-if_packets- interface-lo-if_errors- interface-eth0-if_octets- interface-eth0-if_packets- interface-eth0-if_errors- load--load- memory--memory-used memory--memory-buffered memory--memory-cached memory--memory-free
CloudWatchで表示させたいものは、次のホワイトリストのファイルで指定します。
cat /opt/collectd-plugins/cloudwatch/config/whitelist.conf
今回は、下記のようにCPU、ネットワークインタフェース、メモリ関連の全てを対象にしました。
cpu-0-cpu-.* interface-eth0-.* memory--memory-.*
設定を変更したのでcollectd
を再起動します。
sudo service collectd restart
確認
しばらくするとCloudWatchで下記のようにグラフが表示されていればOKです。
最後に
デフォルトの設定でCloudWatchにメトリクスを送ることができることが確認できました。
collectdは様々なリソース情報を収集することができるので、これで様々な情報を簡単にCloudWatchと連携できるようになりました。
是非ご活用ください。
以上です。